/* 
 * File:   Pacote.cpp
 * Author: thiagojesus
 * 
 * Created on May 23, 2012, 8:38 AM
 */

#include <iostream>

#include "Pacote.h"
#include "Cliente.h"
#include "ItemAgenda.h"
#include "Agenda.h"
#include "Lista.cpp"
#include "Carteira.h"

Pacote::Pacote() {
    vacpac = NULL;
}

Pacote::Pacote(int d, int m, int a, Vacina::Listavac* vac){
    dataPacote.SetDia(d);
    dataPacote.SetMes(m);
    dataPacote.SetAno(a);
    vacpac = *vac;
}

Pacote::Pacote(const Pacote& orig) {
    
}

Pacote::~Pacote() {
    
}


void Pacote::elaborarPacote(Cliente::Lista *cli,Vacina::Listavac *vac, std::string *nomecli, std::string *nomepac){
    Cliente *c;
    Paciente *p;
    Data *dt;
    Vacina *v = *vac;
    Paciente::Listapac pac;
    std::string nome;
    int ano;
    std::cout<<"Digite nome do cliente responsavel:";
    getline(std::cin,nome);
    getline(std::cin,nome);
    c = Cliente::pesquisar(cli,nome);
    if(c!=NULL){
        *nomecli = nome;
        pac = c->getPaciente();
        std::cout<<"Digite nome do paciente:";
        getline(std::cin,nome);
        p = Paciente::pesquisar(&pac,nome);
        if(p!=NULL){
            *nomepac = nome;
            ano = p->retnasc();
            ano = 2012-ano;
            while(v != NULL){
                if(v->getIdade() == ano){
                    cadastrar(&vacpac,v);
                    nvac++;
                    v = v->prox;
                }
            }
        }
    }
}

void Pacote::addVacina(Vacina::Listavac *vac){
    Vacina *v;
    std::string nome;
    std::cout<<"Nome da vacina a ser adicionada:";
    getline(std::cin,nome);
    getline(std::cin,nome);
    v = Vacina::pesquisar(vac,nome);
    if(v!=NULL){
        cadastrar(&vacpac, v);
        nvac++;
    }
}

void Pacote::removeVacina(){
    Vacina *v;
    std::string nome;
    std::cout<<"Nome da vacina a ser adicionada:";
    getline(std::cin,nome);
    getline(std::cin,nome);
    v = Vacina::pesquisar(&vacpac,nome);
    if(v!=NULL){
        deletar(&vacpac,v);
        nvac--;
    }
}

double Pacote::calcularValorTotal(){
    double total;
    Vacina *v;
    v = vacpac;
    while(v!=NULL){
        total = total + v->getPreco();
        v = v->prox;
    }
    return total;
}

ItemAgenda* Pacote::aceitarPacote(std::string nomecli, std::string nomepac, Cliente::Lista *cli){
    int d1,m1,a1,d2,m2,a2,horario, d,m,a;
    Paciente::Listapac *lp;
    std::cout<<"Data Agendamento: dd mm aaaa";
    std::cin>>d1;
    std::cin>>m1;
    std::cin>>a1;
    std::cout<<"Horario:";
    std::cin>>horario;
    std::cout<<"Data Atendimento: dd mm aaaa";
    std::cin>>d2;
    std::cin>>m2;
    std::cin>>a2;
    d = dataPacote.GetDia();
    m = dataPacote.GetMes();
    a = dataPacote.GetAno();
    Cliente *c = Cliente::pesquisar(cli,nomecli);
    if(c!=NULL){
        *lp = c->getPaciente();
        Paciente *p = Paciente::pesquisar(lp,nomepac);
        if(p!=NULL){
            Carteira *c = p->getC();
            Carteira::atualizapacote(&vacpac,d1,m1,a1,c);
        }
    }
    ItemAgenda *ia = new ItemAgenda(d1,m1,a1,horario,d2,m2,a2);
    return ia;
}

Vacina::Listavac Pacote::getVacpac() const {
    return vacpac;
}

